#ifndef PH_SCREEN
#define PH_SCREEN

#include <atlbase.h>
#include <atlapp.h>
#include <atlgdi.h>
#include <set>
#include <map>
#include <string>
#include "boost/date_time/posix_time/posix_time.hpp"
//#include <windows.h>

class PHDisplay
{	
	public:
	PHDisplay() 
	{
		_selected=0;
		filter_user=filter_exec=false;
	}
	boost::posix_time::ptime _WinLeft, _WinRight;

	/*Display fields*/
	

	/*a list of whats on screen now is kept in ProcessAreas */
	std::map<long,RECT> _ProcessAreas;
	std::map<long,HICON> icons;

	bool _complete;
	
	private:
	
	RECT CalculateRect(boost::posix_time::ptime Start,boost::posix_time::ptime End ,boost::posix_time::ptime Left,int iLine);		
	
	public:
	
	std::set<long> _clipped_left,_clipped_right;
	std::map<long,std::string> _EXEImages;
	
	std::map<long,std::string> qrypaths;

	/*Display methods*/
	void ReadPaths();
	
	//void DrawTimeAxis(CDCHandle);
	void UpdateWindow();
	int _Width;

	boost::posix_time::ptime GetEndTime(boost::posix_time::ptime Left);
	
	unsigned long _selected;
	//std::set<unsigned long> ignore;
	bool filter_user,filter_exec;
	//std::string filtered_user;
	int filterUserID;
	unsigned long filterCRC;
};

void GetVersionInfo(std::string & Product, std::string & Description, std::string path);

#endif